package main

import "log"

func main() {
	a := []int{1, 2, 3, 0, 0, 0}
	b := []int{2, 5, 6}
	merge(a, 3, b, 3)
	log.Println(a)
	//log.Println(b)
}

// 将两个切片合并
//给定两个排序后的数组 A 和 B，其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法，将 B 合并入 A 并排序。
//
//输入:
//A = [1,2,3,0,0,0], m = 3
//B = [2,5,6],       n = 3
//
//输出: [1,2,2,3,5,6]
func merge(A []int, m int, B []int, n int) {
	i, j, index := m-1, n-1, len(A)-1
	for i >= 0 && j >= 0 {
		if A[i] >= B[j] {
			A[index] = A[i]
			i--
		} else {
			A[index] = B[j]
			j--
		}
		index--
	}
	if j >= 0 {
		copy(A[:j+1], B[:j+1])
	}
}
